/*Copyright (C) 2009 Careil Baptiste

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/

#ifndef DAMES_DEPLACEMENTS_HEADER
#define DAMES_DEPLACEMENTS_HEADER

#include "../types/types.h"
#include "Dames_constantes.h"

///////////////////////////////////////////////////////////
/// Permet le déplcement final des pions
///
/// Cette fonction scrute le tableau de destination et le point select
/// pour effectuer les déplacements demandés.
///
/// \param array Le tableau de jeu
/// \param pos Un pointeur sur l'ensemble des positions initialisées durant
/// les étapes SELECT et DESTINATION
/// \param nbPionsAdverses Un pointeur sur le nombre de pion adverse qui
/// sera décrémenté si nécessair.
///////////////////////////////////////////////////////////
void Dames_Move(DAMES_CASEVALUE array[DAMES_ARRAY_SIZE][DAMES_ARRAY_SIZE], DAMES_POS *pos, int *nbPionsAdverses);

///////////////////////////////////////////////////////////
/// Permet de 'manger' le pion compris entre src et dest tout en déplaçant
/// le pion se trouvant en src.
///
/// \param array Le tableau de jeu
/// \param src Le point source de l'action
/// \param dest le point de destination de l'action
///////////////////////////////////////////////////////////
void Dames_Manger(DAMES_CASEVALUE array[DAMES_ARRAY_SIZE][DAMES_ARRAY_SIZE], IPoint src, IPoint dest);

///////////////////////////////////////////////////////////
/// Permet de valider la sélection d'un pion
///////////////////////////////////////////////////////////
bool Dames_SelectValid(DAMES_CASEVALUE array[DAMES_ARRAY_SIZE][DAMES_ARRAY_SIZE], IPoint select, bool whitePlayerTurn);

///////////////////////////////////////////////////////////
/// Permet de valider une destination
///////////////////////////////////////////////////////////
bool Dames_DestValid(DAMES_CASEVALUE array[DAMES_ARRAY_SIZE][DAMES_ARRAY_SIZE], DAMES_POS *pos, bool whitePlayerTurn);
#endif
